Public (software) Library Programming Library Descriptions and Compilation Copyright 1993 Nelson Ford Duplication, reprinting and distribution of these descriptions is restricted. See LICENSE.DOC in the PSL_NEWS directory for complete information C Programming, part 2 CONTENTS -----DOS_ACCS: routines for accessing DOS, DOS functions, etc. -----MEMORY: memory management, accessing, TSR's, multi-tasking, etc. -----INFO_TUT: Information, tutorials, etc. -----TOOLS: programming tools for C ============================================================= -----DOS_ACCS: routines for accessing DOS, DOS functions, etc. [CL_RH] CL (Hirst, Roger; $0) is the C++ source for a command line parser. [CMDLN] CmdLn (Small, John W.; $0) provides an easy way to parse the command line. [Att] Att 1.0 (Tortorelli, Tony; $?) is C code for a file attribute modification program. [CHKFLP] Chkflp (Kevin Traup; $0) contains source code and an executable to check the status of a floppy drive. [ConCur] ConCur 1.0 (Dickerson, Richard; $0) is a concurrent programming module for the C programming language that enables multi-tasking. It is small and easy to use, and has built-in window management routines. [CRITERR] Critical Error Handler (Hyman, Peter; $0) is a critical error handler, primarily for use with compilers that do not offer trapping or messages like Abort, Retry, Ignore. [DirScan] DirScan 1.0 (Garrison, Jim; $0) is public domain C source code for a utility that searches a disk directory structure for all files matching the file-name and extension contained in the file mask. [DSIZEDB] DIRSize 1.0 (Bennett, David; $0) is C source code to display a listing of directory and subdirectories specified. [DISKSIZ] DiskSize (Ford, George, H.; $0) is a routine to determine disk media size and attributes. [DRVRDY] DrvRdy (Crosley, Tom; $0) is a routine for C to check to see if a floppy disk drive is ready. This avoids the "Abort, Retry, Ignore" message when the drive latch is left open, etc. [FILEBUFF] FileBuff (Morris, Ben; $0) contains source code to find values of FILES= and BUFFERS= as set in CONFIG.SYS. [FINDDEV] FindDev (Woodruff, Eric; $0) is a routine which will locate a specified device driver in memory. [LESS] Less.C (Lowther, Bruce; $0) is source code for a utility like DOS's MORE filter, but scroll length can be modified on the command line. This program is an example of combinations of the stdin stream, CON stream, and command line parameters. [VLCLASS] Volume Label Class (Astin, Tom; $0) is code for getting, setting and removing DOS disk volume labels. [MSCHRT] Microsoft C High Resolution Timer 2.00 (MSCHRT) (Ryle Design; $8) is a software "toolbox" of C routines to manipulate one hundred different timers each with one microsecond resolution. MSCHRT makes it easy to very accurately time nearly any synchronous or asynchronous event your PC can encounter. [BIOSEQP] BiosEquip (Hawk, H.L.; $0) is code that reports on system configuration: the number of disk drives, parallel printers, serial ports, video mode, DOS version, and checks for a math co-processor and game port. [CPUSPED] CPUSpeed contains small C functions to get CPU type and speed. [DRIVER] Driver (Hopson, Scott; $0) is a DOS device driver using C, with the header in Assembler. This should be helpful to programmers wanting information on writing DOS Device Drivers. Commented source code is included. [DRVSPC] DrvSpc (Micro Solutions Group, Inc.; $0) is a function that returns a long value containing the current available drive space for the default drive or the specified drive. [I_Set] I_Set 3.53 (Migliavacca, David; $0) contains C functions for editing of DOS master environment, and a utility to automate variables-setting tasks with an easy language. A choose program with an option to add strings in front of a list in an environment string is included. [BDC] Bulk Disk Copier (MicroGenesis Software; $0) is C source for reading a floppy image to a hard disk and copying it back to as many floppies as you wish. It also formats blank floppies. The source code is an excellent tutorial on lowlevel disk access under DOS. -----MEMORY: memory management, accessing, TSR's, multi-tasking, etc. [RMAXTSK] RMAXTask 1.0 (RMAX Development Group; $25) is a library of C functions for multitasking. It offers support for intertask synchronization and communication, timed delays, and access to the keyboard. This system is non-preemptive, but provides better intertask communication and scheduling than do simple round-robin task switchers. [CPPTASK] CPPTask (Smith, Rich; $0) is a multi-tasking kernel For C++. [GP] GP.C (Erdelsky, Philip J.; $0) contains a general, reentrant version of printf() that can easily be adapted to embedded systems. [MTask] MTask 1.0 (Ting, I H; $0) is a multitasking Turbo C library. [RDCF] RDCF 2.0 (Erdelsky, Philip J.; $0) is a ROMable, reentrant, DOS-compatible file system. [TSR_C] TSR_C is an example of TSR in C that loads and unloads according to undocumented DOS. [ALLOCWG] Alloc (Gersbacher, Willard; $?) contains several memory allocation procedures. The procedures included provide functionally equivalent memory allocation procedures for the main memory procedures used in MSC 5.1. The MSC 5.1 library procedures were not satisfactory for this application because they did not release memory back to the system when it was `free'ed. Additionally, they tended to allocate too much memory under certain circumstances which lead to a reduction in space available for other programs and data which were currently active at the time. [DVMAM] DVMAM 1.10 (R.C.B. Enterprises; $35) is a memory allocation function that enables your programs to access up to 24.5 megabytes of memory. This memory can be expanded, extended or conventional. It is able to allocate eight megs of LIM EMS memory 3.2 or higher, 16 megs of extended memory on a 80286/386 system, or 500k plus conventional memory. [OVRLYGM] Overlay (Martin, Gregory A.; $53) allows you to free up virtually all of your memory used by your currently executing application and then run another large program or shell out to DOS. It is written in assembly language and callable by other assembly language or C programs. [MEMCHEK] MEMCheck 1.0 (Bridges, Steve; $0) is a library of functions to help monitor heap usage and heap consistency in a real time mode for programs written in Microsoft C. [LABYTE] LAByte (Logical Answers Corp.; $15) is a set of routines for handling memory allocation and pointers. [MEM] Mem (Bright, Walter; $0) is a set of C routines for diagnosing pointer problems, such as reference to freed space, overrun or underrun of buffers, failure to free space, failure to initialize malloced structures and more. [RCS] Reentrant Cache System 1.0 (Erdelsky, Philip J.; $0) is the source for a reentrant cache system. [EMSIF] EMSIF 2.42 (Birdsall, James W.; $5) is an interface to most common EMS functions such as allocating, mapping, freeing EMS and copying data to and from EMS. [PCVMM] PC Virtual Memory Manager (Superior Soft; $20) is the small and large model library for a fast memory manager that allows your application programs to allocate up to 32MB of virtual memory. Sample pcVMM program source code is included. [SPAWNSB] Spawn 1.1 (Bridges, Steve; $17) is a set of functions for swapping a program to EMS or disk in order to free up memory for another program and then restore the original program when the second one is done. [XMSIF] XMSIF 1.42 (Birdsall, James W.; $5) provides a high-level interface to XMS control functions for common operations such as allocating and freeing XMS extended memory blocks and upper memory blocks and copying data to and from EMBs. [CSwitch] CSwitch (Rose, Herb; $35) is a multitasking library. It provides a preemptive schedular, semaphores, message queues, prioritized tasks, delay functions, and more. Tasks can be spawned internally or loaded from disk. C object modules are included. [CTASK] CTask 2.2d (Wagner, Thomas; $0) is a set of routines that allow your C program to execute functions in parallel, without your having to build in sophisticated polling and switching schemes. CTask handles the switching of processor time with a priority based, preemptive schedular, and provides a fairly complete set of routines for intertask communication, event signalling, and task interlocking. CTask also includes a number of drivers for MS-DOS that build on the basic functions to allow you to include serial I/O, printer buffering, and concurrent access to DOS functions into your programs with little programming effort. Support is provided for EMS, 80x87 numeric coprocessors, and keyboard hotkeys. [VM7] VM7 (KIS Systems; $65) is a virtual memory manager for data in C programs. Features include up to seven sets of paging banks; paging to extended memory supported; on the fly page allocation; utilities that handle lists, arrays, and hash tables; infrequently accessed code separated to allow overlays; and a debugging mode for bad handle checks. [Spawno] Spawno (Brown, Ralf; $0) is a replacement for the Turbo C and Microsoft C spawn () functions. It swaps the current program to disk, EMS, XMS, or raw extended memory while the spawned program executes, leaving less than 300 bytes in memory. A variant for Turbo Pascal 4.0 or higher is included. [TSRTOOL] TSR Toolkit 1.5 (Friesen, Geoff; $0) is a toolkit for writing TSRs which need DOS access. Features include extended memory access, mouse support, sound and timer support, and more. -----INFO_TUT: Information, tutorials, etc. [COP] COP (Small, John W.; $35) defines a formal approach to Object Oriented Programming in C. COP upholds the concepts of encapsulation, single and multiple inheritance involving virtual base classes, and polymorphism using the C preprocessor. Source code included. [JST4FUN] Jst4Fun (Vass, Garry J.; $0) is a random collection of C fragments demonstrating the potential of C to address philosophical and political issues. [ADV_IN] Adv_In_C (Valentine, Joaquin; $?) is a tutorial in C programming, complete with homework assignments. You will need a C compiler and a text editor, [BOOK_C] BOOK-C.LST (Chicares, Greg; $0) is a review of a dozen or two books on learning the C programming language. [CV_XVT] CV-XVT (Rochkind, Marc J.; $0) is a text file that provides a detailed comparison of the CommonView and XVT high-level libraries for C. [HELPCPP] Help.Cpp (Hillman, Dave; $0) is a modification of help.cpp for ALT-F1 to retrace previous topics. [C_HINTS] Hints For Effecient Programming (Omega Point, Inc.; $0) is a text file with 38 tips for optimizing C programs. [ARRAYS] Arrays (Hamilton, Dennis E.; $0) demonstrates the do's and dont's of trying to set and use pointers to arrays in C and C++. [FLGZERO] FLGZero (Bender, A.L.; $0) demonstrates the way MASM 5.1 can interface with your C programs. Source is included. [IOSTRM] IOStream (Nagler, Eric; $0) is a tutorial on the IOStream.h header file. It provides information about the members of class IOS and its decendants, as well as manipulators. [TUTC] C Tutor 2.4 (Dodrill, Gordon J.; $15) is a series of 14 lessons teaching ANSI-C programming. It is intended for those with very little programming experience. [TUTCPP] C++ Tutorial 2.20 (Dodrill, Gordon J.; $15) is a series of 14 lessons teaching C++ programming. It is intended for a person with a working knowledge of C. Careful attention is given to a full description of Object Oriented Programming and how to use it. [CTUTR_CE] C++ Tutor (Coronado Enterprises; $40) is a comprehensive instructional course for the C++ programming language. All of the points of C++ language, including properly-structured programming techniques, are covered at the elementary level. Source code is included for a large example program to illustrate how to use C++. (Borland C++ required.) [C_TUTOR] C Tutor is a tutorial on programming in C. [CTUTR_CE] C Tutorial (Coronado Enterprises; $15-$40) is a C tutorial book-on-disk. The disk contains the Advantage Paperless Reader. This is an excellent C tutorial. [MYSTERYC] Mystery of C (Groff Software; $10) is a beginner's course in the C language written in the form of a murder mystery. Also included are uncompiled C programs that form part of the mystery. A compiler is not required for use with the program. [ARCADE] Programming Arcade Games (Conger, David; $18) is an interactive tutorial for programming object oriented arcade games in Turbo C. It teaches the fundamental techniques of animation and the underlying principles of object oriented programming. It helps you apply animation techniques to writing arcade games and create an easier transition to object oriented languages like C++. Requires EGA/VGA/SVGA. -----TOOLS: programming tools for C [CSTREAM] CStream (Small, John W.; $0) provides a base class for a polymorphic cluster of streamable classes. In other words, this is like a TurboVision for C++. [CXREF] C xref 2.0 (Archibald, David; $20) cross references any number of C modules and outputs a list of global variables and constants, a summary listing of module's functions, a verbose list of module's functions and a tree of all function's calls and callers. [CROSS] Cross 1.0 (Philip N. Hisley; $0) is a cross reference generator for C programs. Features include routing of list output to disk, cross-referencing of reserved words, processing of nested include files, and generation of listing only. Source is included. (The author can no longer be reached at the address provided in the documentation.) [BLDLIB] BldLib (Zemke, Dan; $0) is C source code for a utility which creates one or more libraries from all *.C files in the current directory. [PWRCSHL] Power C Shell (Steenburgh, Chuck ASP; $15) allows you to simplify editing, compiling, and debugging of POWER C programs. Features include pull-down menus, online help, project management, and more. [TLC] TLC 1.0 (Lowery, Tom; $0) creates a formatted listing, optionally with a cross-reference, from a given set of C source files. [BBC] BBC (Summit Software; $15) fixes up your C source files to your specifications. [BK1] BK1.MAC (Kline, Bill; $0) is a set of macros for use in the Turbo C++ IDE editor. [COBGEN] COBGEN (Au Software; $25) produces compiler-ready header and OBJ files. [CALLS] Calls (DeSouza, A.; $?) analyses program calls. [CB210] CB 2.10 (Sledge, Bob; $?) is a C source code beautifier. It reformats the layout of C source to a more readable style and format. [CHKSEG] ChkSeg (Gersbacher, Willard; $0) is a C programming utility which checks the segmentation structure of an overlayed program and tells you which procedure calls, in segments other than the root, cause other segments to be loaded. [CODECN] Code Count (Enterprise Software; $10) scans C source code files and provides a breakdown of executable code versus non-executable code. Non-executable code is broken down as comments, blanks, control characters [CREF] Cref (DeSouza, A.; $?) is a C cross reference utility [CTAGS] Ctags (Verket, Paul; $0) will generate tags for subsequent use by Brief, Emacs or VI editors. This program will perform a simple parsing of one or more Fortran or C source files and write a "tags" file to stdout. The tags file is then used in conjunction with tagging macros available for Brief or Emacs, or commands built into VI and available (as macros) from the Solution Systems BBS. [EXECBEP] ExecBeep 3 (Lazo, Charles and Ross, Ed and Nettles, Henry T.; $0) is especially useful for spying on the multiple passes of C compilers. [GetCMT] GetCMT 1.1 (Byte_Magic Software; $0) extracts comment lines from C or C++ source files. It is useful for creating documentation and improving commenting style. [HexFile] HexFile 1.0 (Berry, Joseph; $?) takes as input any file and creates an output file containing the ASCIIized hexidecimal equivalent of the file in a format usable by C compilers. [LOCATE] LocatEnv (Hyman, Peter; $0) illustrates two methods of locating the master environment in MS-DOS. C code is included, along with an executable version. [Maker] Maker 1.02 (Adams, Richard W. ASP; $15) generates MAKE description files & link files for a C language programs. It is designed for the Microsoft C compiler, but some generality has been built in too. [MEMCLN] Memory Clean 1.0 (Beilstein, Robert J.; $?) will write an initial value (with good parity) into all of the memory locations which IBM misses. [PEPTO] Pepto (Stafford, David; $5) is designed to shrink C source files. It does a very good job of it and it does it quickly. PEPTO can also be very useful for distributing secure copies of source code. The sender can change the major variable names throughout the file via his favorite editor's search-and-replace function, then PEPTO it. The result is a virtually indecipherable source file which is still compilable. [PGMPROT] PgmProt (Endresen, Hal; $0) contains the C and MASM source for a utility to protect your program's copyright messages. It allows serialization of released software and permits version numbers to be assigned following compilation, and just prior to release shipment. Your copyright message, serial number, and version number are protected by a checksum byte in the .EXE file. [SPU] Source Print Utility 1.1 (Ratjen, J. C.; $0) prints C source files in a structured format. It will print the file name, page number, and date of last modification at the top of each page. Each line of code is printed (usually in compressed mode) with it's relative line number. C source code is included. [SUPRMNT] Super-Maint (EmmaSoft ASP; $55) is a program development maker with an editor and help facility. Many sophisticated features are provided for building programs from source code kept on many drives and directories. Features include support for three memory models, three languages at a time plus a linker and librarian, Mouse support, and more. Support is also included for MIX compilers (Power C and the Mix assembler), Clipper, and Aztec Manx C. [TrackIt] TrackIt (Clear Software; $29) uses a point and shoot environment to build libraries instead of typing lengthy DOS command lines. Libraries can be built in seconds. [XRF] XRF 1.23 (Goodgame, Tom; $0) is a cross-reference block-structure program written in C for C and similar languages. [ZAPLOAD] Zapload (Jennings, T.; $?) converts a file from Binary to Intel Hex format, and sends it to one or more destinations: a disk file, the punch device, or the printer. [CB] CB 3.1 (Wells, Drew; $0) formats C/C++ source code. It tries to change your source file as little as possible while still imposing a standard format on it. [BOR_TI] Borland C++ TI's is a collection of 15 routines and technical information reports. Subjects covered include removing and setting volume labels, fast graphics library, mouse programming in graphics mode, determining the amount of stack not being used, playing WAV files, switching between graphics and text modes without clearing video memory, detecting unusual keystrokes, determining extended memory size, and much more. [CD_MCI] CD_MCI shows how a C++ class wrapper around MCI can make development of MCI applications easier. [CMPRSS] Cmprss (Clifton, Marc-Thomas; $0) contains two file streams which compress/uncompress data being written to or read from a file. A test program and utility are included. [CL121] CodeLister 1.21 (McDowell, Malcolm D. ASP; $24) prints C source code files. Features include multiple pages on one sheet, page headers, index list of function names with page numbers, more. [FLXLSTC] FlexList for ANSI C (Power SoftWare; $65) provides a generic linked list of hybrid stack-queue-list array structure. More than 30 methods allow you to push, pop, insert, delete, sort, store, recall, etc. lists of any type data. K&R and ANSI source are included. [INPFIEL] Inpfiel (Christensen Online; $?) contains a generic input field class. This provides a mechanism for input of various types of data, with validation. The "generic" qualities of the input field are achieved through a polymorphic InpData object, and can easily be derrived to suite your own data types. [LINKLI] Linkli (SpeedSOFT Development ASP; $0) contains code that implements a linked-list algorithm using standard technique. The code is fast and memory-efficient, and well documented. [LJL] LJL (W. Conover, Woodrow; $0) contains source code and an executable for printing C source code on a Laser-Jet Series II. [MCMM] MCs Menu Maker 0.8 (Hula, Mark; $?) contains skeleton code and full instructions for creating menus/window front-ends for any text mode DOS application. [STR] STR 2.1 (Woll, Roy S.; $10) is an improved, general purpose STR class. [FILARRY] FileArray (Hua, Jian; $0) serves as array to retrieve strings from a file. The idea is to remove literal strings from C++ source file and put them into a text file to save program memory. [KEYMAP] KeyMap (Hardegree, John; $0) is a C header file for defining keystrokes. This utility helps build the header file by allowing you to press each key on the keyboard and assign one or more mnemonic names to it. These are then written to a file as standard C language #define statements. Source is included. [MKPROTO] MKProto generates prototypes for C source files. [CPARSER] Wheaton C/C++ Source Parser (Wheaton, Paul; $25-$50) is a C/C++ source parser. It takes a library that consists of large C files and breaks it into many more small C files and then runs them through the compiler and makes the appropriate substitutions in the LIB file. EXE files will then compile to a smaller EXE and will load faster. [BLCKADE] Blockade 2.05 (Indusoft Corp.; $10-$30) is a function library for programs to protect themselves against unauthorized changes. It checks every byte of your EXE or COM file to insure that any changes are detected. It is very fast and easy to use. [LAYOUTC] Layout 1.0 (Lincoln Beach Software; $10) generates C code for recreating report layouts. Files defining the layout can be created with any text editor. [XNAS] XNAS 2.13 (Sorger, Walter; $0) is a type of program code flowcharting utility. [C_EDITOR] C Editor is a programming environment for the 'C' programming language. [Clasic] Clasic is a C/2 compatible compiler written in assembly language over a three year period by graduate students working under a Federal grant. It is professional quality, but no documentation is included, so it is of interest mainly to those already versed in C. [CLINT161] Clint 1.61 (R&D Associates; $35) reads the source files of your C programs and generates reports about possible problems. [CPR] CPR (Argo Data Resource Corporation; $0) is a cross reference program that can handle very large projects, over 60 modules containing over 15000 lines of code. Included are the source and make files necessary to make CPR for DOS, OS/2, and the BOUND versions. [CODEPRNT] CodePrint for C and C++ 1.02 (Geist Microsystems; $53) is a source code reformatter and printer for C languages. It offers auto-indenting, alignment of comments, editable keyword templates and more. [C_VIEW] C View (Little, Curtis; $20) prints C source code with proper indenting. It can also be used to generate new source code files that are indented properly according to the language being used. C View can generate a table of contents listing all the functions declared in your code along with an extensive cross reference of identifiers. It can locate nesting errors, mismatched parenthesis, misplaced else statements, and misplaced case/default statements. [DMalloc] DMalloc 1.0 (Vogelsinger, Ernest ASP; $47) is a pop-up memory debugger for MS-C 5.1 and 6.+ (large memory model). It monitors heap integrity and the dynamic memory requirements of an application. [Indent_C] Indent_C is a C program formatter. Numerous command line switches let you customize the output. [IXREF] Interactive Cross Reference (Orange Software; $35) turns C or C++ code into a cross referencing data base. It lets you interactively search and browse through your programs. This makes it easier for you (or others) to understand the source code and to reuse parts of it. [LDBIND] Loose Data Binder (Small, John; $30-$40) is a C++ persistent container class with a stack-queue-deque-list-array interface and built-in sort-search-iterate functions. Source code and demos are included. [PGEN_2] PGEN Parser GENerator 2.0 (Robertson, Keith L.; $20) is a parser generator that reads a grammar file and creates compact parse tables for the included C language parser driver. PGEN is limited to 100 grammar productions and PPrint will not print files larger than 20000 bytes. [STATEMCH] State Machine (Buck, Rob; $25-$50) is a tool for facilitating state machine implementations in the C programming language. It can be used to implement control logic for many applications including communications protocols, user interface navigation logic, device handler control logic, autopilot supervisor, and multiprocessor pipeline synchronization control. There are several examples included. [TAGSGEN@] Tags Generator (Kercheval, J.; $0) is a tags file generator for assembly and C code. Tag files allow fast code traversal and maintenance. This utility allows a large amount of customization of tag types generated; supports several tag formats and is fast. Sources and executables are included. [TSD] TSD (Innovative Data Concepts, ASP; $50) is an interactive user-interface design tool capable of creating clean, commented TCXL code. It combines TCXL windows, forms and menus to allow full-featured program prototyping that generates well-documented C source code. With TSD, you can significantly reduce development time. Most C compilers are supported. [TVTools] TVTools (Stern, Marc; $0) is a library of general-purpose tools for TurboVision. This package includes high-level functions and new objects. It also contains a lot of non-TV functions such as string and date routines. Source code included.